package com.wang.orders.service;

import com.alibaba.fastjson.JSONObject;
import com.wang.common.util.PageInfoUtil;
import com.wang.orders.pojo.ACart;
import com.wang.orders.pojo.AOrders;
import com.wang.orders.pojo.AOrdersGoods;
import com.wang.orders.pojo.AOrdersHistory;

import java.util.List;
import java.util.Map;

/**
 * 一个模块一个Service
 */
public interface IOrdersService
{
    /**
     * 保存一条购物车记录
     * @param cart   购物车
     * @return  是一个json对象;
     * {
     * 	"code":"响应码",
     * 	"info":"响应信息",
     * 	"data":
     *    {
     * 		"id:":"",
     * 		"effect":""
     *    }
     * }
     */
    JSONObject saveOneCartService(ACart cart);

    /**
     * 更新一条购物车记录
     * @param cart   购物车
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject updateOneCartService(ACart cart);

    /**
     * 删除一条购物车记录
     * @param condMap   搜索条件
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject deleteBatchCartService(Map<String,Object> condMap);

    /**
     * 查询一条购物车记录
     * @param condMap   查询条件
     * @return  查询一条购物车记录
     */
    ACart selectOneCartService(Map<String,Object> condMap);

    /**
     * 查询多条购物车记录
     * @param pageInfoUtil 如果为null,查询全部记录,不分页;如果不为空,分页;
     * @param condMap   查询条件
     * @return  查询一条购物车记录
     */
    List<ACart> selectCondListCartService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

    /**
     * 保存一条订单记录
     * @param orders   订单
     * @return  是一个json对象;
     * {
     * 	"code":"响应码",
     * 	"info":"响应信息",
     * 	"data":
     *    {
     * 		"id:":"",
     * 		"effect":""
     *    }
     * }
     */
    JSONObject saveOneOrdersService(AOrders orders);

    /**
     * 更新一条订单记录
     * @param orders   订单
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject updateOneOrdersService(AOrders orders);

    /**
     * 删除一条订单记录
     * @param condMap   搜索条件
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject deleteBatchOrdersService(Map<String,Object> condMap);

    /**
     * 查询一条订单记录
     * @param condMap   查询条件
     * @return  查询一条订单记录
     */
    AOrders selectOneOrdersService(Map<String,Object> condMap);

    /**
     * 查询多条订单记录
     * @param pageInfoUtil 如果为null,查询全部记录,不分页;如果不为空,分页;
     * @param condMap   查询条件
     * @return  查询一条订单记录
     */
    List<AOrders> selectCondListOrdersService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

    /**
     * 保存一条订单商品明细记录
     * @param ordersGoods   订单商品明细
     * @return  是一个json对象;
     * {
     * 	"code":"响应码",
     * 	"info":"响应信息",
     * 	"data":
     *    {
     * 		"id:":"",
     * 		"effect":""
     *    }
     * }
     */
    JSONObject saveOneOrdersGoodsService(AOrdersGoods ordersGoods);

    /**
     * 更新一条订单商品明细记录
     * @param ordersGoods   订单商品明细
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject updateOneOrdersGoodsService(AOrdersGoods ordersGoods);

    /**
     * 删除一条订单商品明细记录
     * @param condMap   搜索条件
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject deleteBatchOrdersGoodsService(Map<String,Object> condMap);

    /**
     * 查询一条订单商品明细记录
     * @param condMap   查询条件
     * @return  查询一条订单商品明细记录
     */
    AOrdersGoods selectOneOrdersGoodsService(Map<String,Object> condMap);

    /**
     * 查询多条订单商品明细记录
     * @param pageInfoUtil 如果为null,查询全部记录,不分页;如果不为空,分页;
     * @param condMap   查询条件
     * @return  查询一条订单商品明细记录
     */
    List<AOrdersGoods> selectCondListOrdersGoodsService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);

    /**
     * 保存一条订单历史记录
     * @param ordersHistory   订单历史
     * @return  是一个json对象;
     * {
     * 	"code":"响应码",
     * 	"info":"响应信息",
     * 	"data":
     *    {
     * 		"id:":"",
     * 		"effect":""
     *    }
     * }
     */
    JSONObject saveOneOrdersHistoryService(AOrdersHistory ordersHistory);

    /**
     * 更新一条订单历史记录
     * @param ordersHistory   订单历史
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject updateOneOrdersHistoryService(AOrdersHistory ordersHistory);

    /**
     * 删除一条订单历史记录
     * @param condMap   搜索条件
     * @return  此条sql语句对数据库影响的条数
     */
    JSONObject deleteBatchOrdersHistoryService(Map<String,Object> condMap);

    /**
     * 查询一条订单历史记录
     * @param condMap   查询条件
     * @return  查询一条订单历史记录
     */
    AOrdersHistory selectOneOrdersHistoryService(Map<String,Object> condMap);

    /**
     * 查询多条订单历史记录
     * @param pageInfoUtil 如果为null,查询全部记录,不分页;如果不为空,分页;
     * @param condMap   查询条件
     * @return  查询一条订单历史记录
     */
    List<AOrdersHistory> selectCondListOrdersHistoryService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);
}
